package com.ruoyi.common.exception.job;

/**
 * 计划策略异常
 *
 * @author ruoyi
 */
public class TaskException extends Exception {
    private static final long serialVersionUID = 1L;

    private Code code;

    /**
     * 构造一个任务异常实例
     *
     * @param msg 异常消息
     * @param code 异常代码
     */
    public TaskException(String msg, Code code) {
        this(msg, code, null);
    }

    /**
     * 构造一个任务异常实例
     *
     * @param msg 异常消息
     * @param code 异常代码
     * @param nestedEx 嵌套异常
     */
    public TaskException(String msg, Code code, Exception nestedEx) {
        super(msg, nestedEx);
        this.code = code;
    }

    /**
     * 获取异常代码
     *
     * @return 异常代码
     */
    public Code getCode() {
        return code;
    }

    /**
     * 任务异常代码枚举
     */
    public enum Code {
        /** 任务已存在 */
        TASK_EXISTS,
        /** 任务不存在 */
        NO_TASK_EXISTS,
        /** 任务已经启动 */
        TASK_ALREADY_STARTED,
        /** 未知错误 */
        UNKNOWN,
        /** 配置错误 */
        CONFIG_ERROR,
        /** 任务节点不可用 */
        TASK_NODE_NOT_AVAILABLE
    }
}
